
% Первая глава работы 
\chapter{Network Address Translation}
\label{chap1}

\section{Как работает NAT}
\label{chap1:sec1}
NAT необходим в случае, если количество выданных провайдером IP--адресов меньше, чем количество компьютеров, которым необходимо обеспечить доступ к Интернету.  NAT позволяет использовать зарезервированные блоки адресов, описанные в Address Allocation for Private Internets (RFC 1918):
\begin{verbatim}
	10.0.0.0/8       (10.0.0.0 - 10.255.255.255)
	172.16.0.0/12    (172.16.0.0 - 172.31.255.255)
	192.168.0.0/16   (192.168.0.0 - 192.168.255.255)
\end{verbatim}
Когда клиент из внутренней сети связывается с машиной в Интернете, он посылает IP--пакеты, предназначенные этой машине. Эти пакеты содержат всю необходимую информацию об адресате. NAT работает со следующими данными: 
\begin{itemize}
\item Исходный IP--адрес (например, 192.168.1.35) 
\item Исходный TCP-- или UDP--порт (например, 2132) 
\end{itemize}
Когда пакеты проходят через NAT--шлюз, они изменяются таким образом, что адресатам этих пакетов кажется, будто они исходят от самого шлюза. NAT--шлюз будет записывать преобразования, которые он производит с пакетом, в таблицу состояний. Это позволяет ему производить следующие операции: (http://www.openbsd.org/faq/pf/nat.html)
\begin{itemize}
\item Обратное преобразование ответных пакетов.
\item Проверка прохождения ответных пакетов через брандмауэр.
\end{itemize}
Например, могут быть внесены следующие изменения:
\begin{itemize}
\item Замена IP отправителя на внешний адрес шлюза. 
\item Замена порта отправителя случайно выбранным неиспользуемым портом шлюза.
\end{itemize}

Ни отправитель, ни получатель не знают об этих преобразованиях. Для внутренней машины NAT--система выглядит как Интернет--шлюз. С точки зрения хоста, который не знает о существовании внутренней машины, пакеты приходят непосредственно от NAT--системы. Когда хост отвечает внутренней машине, пакеты направляются на IP--адрес NAT--шлюза, на указанный в пакете порт. Чтобы определить принадлежность ответных пакетов одному из установленных соединений, NAT--шлюз просматривает таблицу состояний. Соответствие определяется на основе комбинации <<IP--адрес получателя исходного пакета / порт>>, которая сообщает шлюзу о том, что пакеты принадлежат соединению, инициированному той или иной машиной. Шлюз производит обратное преобразование и отправляет ответные пакеты внутренней машине. 


   Для мирового сообщества и безопасности внутренней сети использование внутренних адресов крайне полезно. При использовании внутренних адресов адресное пространство истощается не столь быстро --- организации нужен единственный реальный IP--адрес, а не 253! Теперь узлы внутренней сети недоступны напрямую из Интернета и это хорошо для безопасности сети в целом.
\textbf{здесь один из 2х рисунков(какой больше понравится)}
   Клиент отправляет запрос к серверу 1.2.100.9. Данный сервер находится за пределами локальной сети - где-то в Интернете (адрес отправителя 10.0.0.1, адрес получателя 1.2.100.9). NAT-маршрутизатор перезаписывает адрес отправителя (1.2.3.7 - это адрес NAT-маршрутизатора)
и отправляет пакет серверу с адресом 1.2.100.9. Сервер 1.2.100.9 получает пакет с адресом отправителя 1.2.3.7 и адресом по­лучателя 1.2.100.9. Сервер обрабатывает пакет и отправляет ответ на адрес
1.2.3.7 (отправителю). NAT-маршрутизатор запоминает все попытки соеди­нений и возвращает пакет исходному компьютеру - с адресом 10.0.0.1. Адрес получателя у этого пакета будет 10.0.0.1, а адрес отпра­вителя - 1.2.200.9 (а не 1.2.3.7) - как если бы ответ пришел непосредствен­но от сервера. Для клиента (10.0.0.1) процесс трансляции сетевых адресов во всех отношениях прозрачен. Обработать входящие соединения гораздо сложнее. NAT-маршрутизатор получает пакет с адресом получателя 1.2.3.7 (это адрес NAT-маршрутизатора) и адресом отправителя 1.2.100.9.
\textbf{рисунок еще один}
   Например, NAT настроен на перенаправление всех входящих соединений по портам 80 и 443 (HTTPS) к Web-серверу 10.1.1.4, а по портам 25 (SMTP) и 110 (РОРЗ) - к почтовому серверу 10.1.1.5. Все
остальные входящие па­кеты, не отвечающие этим правилам, будут отброшены.


\textbf{Преимущества}

NAT выполняет три важных функции:
\begin{enumerate}
\item Экономит IP--адреса, транслируя несколько внутренних IP--адресов в один внешний публичный IP--адрес. По такому принципу построено большинство сетей в мире: на небольшой район домашней сети местного провайдера выделяется 1 внешний IP--адрес, под которым работают и получают доступ к Интернету все внутренние IP--адреса.
\item Позволяет предотвратить или ограничить обращение внешних хостов к внутренним, а также вести контроль и учет обращения внутренних к внешним. При инициации соединения изнутри сети происходит трансляция. Ответные пакеты, поступающие снаружи, соответствуют произведенной трансляции и пропускаются внутрь. Если для пакетов, поступающих снаружи, соответствующей записи в таблице трансляций не существует, они не пропускаются.
\item Дает возможность скрывать определённые внутренние сервисы. По сути, выполняется та же указанная выше трансляция на определённый порт, но при этом существует возможность подменить внутренний порт официально зарегистрированной службы (например, 80-ый порт TCP, на котором работает HTTP--сервер, на 54055-ый). Тем самым, снаружи по внешнему IP--адресу на сайт, работающий на упомянутом HTTP--сервере, можно будет попасть только по адресу http://mysite.org:54055, а внутренние машины, находящиеся за NAT, смогут получить доступ по обычному 80-му порту.
\end{enumerate}

\textbf{Недостатки}

При использовании NAT хосты Internet взаимодействуют напрямую с NAT--устройством, а не с реальным хостом в частной сети. Входящие пакеты передаются по IP--адресу устройства NAT, а устройство меняет адрес назначения в заголовке пакета со своего собственного Internet -- адреса на адрес частной сети реального хоста назначения.
В результате --- теоретически --- единый уникальный в глобальном масштабе IP--адрес может скрывать за собой сотни, тысячи или даже миллионы хостов, чьи адреса определены в частной сети. На практике, однако, такой подход имеет ряд недостатков. Например, многие Internet--протоколы и приложения существенно опираются на тот факт, что сеть в действительности поддерживает соединение из конца в конец, когда пакеты передаются без каких--либо изменений от отправителя получателю. Архитектура IP--защиты не может поддерживать работу через устройство NAT, поскольку оригинальные заголовки, в которых указаны исходные IP--адреса отправителей, защищены с помощью цифровой подписи. При изменении исходного адреса цифровая подпись потеряет свою целостность.

\begin{enumerate}
\item Не все протоколы могут «преодолеть» NAT. Некоторые не в состоянии работать, если на пути между взаимодействующими хостами происходит трансляция адресов. Некоторые межсетевые экраны, осуществляющие трансляцию IP--адресов, могут исправить этот недостаток, соответствующим образом заменяя IP--адреса не только в заголовках IP, но и на более высоких уровнях.
\item Из--за трансляции адресов «много в один» появляются дополнительные сложности с идентификацией пользователей и необходимость хранить полные логи трансляций.
\item Если NAT используется для подключения многих пользователей к одному и тому же сервису, это может вызвать иллюзию DoS атаки на сервис (множество успешных и неуспешных попыток). Например, избыточное количество пользователей ICQ за NAT’ом приводит к проблеме с подключением к серверу у некоторых пользователей из-за превышения допустимой частоты соединений на один IP--адрес. Частичным решением проблемы является использование группы адресов, каждый из которых указывает на NAT--шлюз.
\item В некототорых случаях появляется необходимость в дополнительной настройке при работе с пиринговыми сетями и некоторыми другими программами, в которых необходимо не только инициировать исходящие соединения, но также принимать входящие.
\end{enumerate}
\cite{lit7}

\section{Типы NAT}
\label{chap1:sec2}
Статический NAT: отображение незарегистрированного IP адреса на зарегистрированный IP адрес на основании один к одному. Особенно полезно, когда устройство должно быть доступным снаружи сети.
   В статическом NAT, компьютер с адресом 192.168.32.10 будет всегда транслироваться в адрес 213.18.123.110
\textbf{здесь будет рисунок статического ната}
   Динамический NAT отображает незарегистрированный IP адрес на зарегистрированный адрес от группы зарегистрированных IP адресов. Динамический NAT также устанавливает непосредственное отображение между незарегистрированным и зарегистрированным адресом, но отображение может меняться в зависимости от зарегистрированного адреса, доступного в пуле адресов, во время коммуникации.
   В динамическом NAT, компьютер с адресом 192.168.32.10 транслируется в первый доступный адрес в диапазоне от 213.18.123.100 до 213.18.123.150
   Пример работы динамического NAT:
\begin{itemize}
\item Внутренняя сеть была настроена с IP--адресами, которые не были cпециально отведены для этой компании IANA (Органом по надзору за присвоением адресов в Интернете). Такие адреса нужно считать немаршрутизируемыми, так как они не уникальны. Это внутренние адреса.
\item Компания устанавливает маршрутизатор с NAT. Маршрутизатор имеет диапазон уникальных адресов IP, выданных компании. Это внешние адреса.
\item Компьютер из внутренней сети пытается соединиться с компьютером из внешней сети.
\item Маршрутизатор получает пакет от компьютера из внутренней сети.
\item После проверки таблицы маршрутизации и процесса проверки для трансляции, маршрутизатор сохраняет немаршрутизируемый адрес компьютера в таблице трансляции адресов. Маршрутизатор заменяет немаршрутизируемый адрес отправителя первым доступным IP адресом из диапазона уникальных адресов. Таблица трансляций теперь имеет отображение немаршрутизируемого IP адреса компьютера, которому соответствует один из уникальных IP адресов.
\item Когда пакет возвращается от компьютера адресата, маршрутизатор проверяет адрес приемника в пакете. Затем он смотрит в таблицу трансляции адресов, чтобы найти, какому компьютеру в домене принадлежит данный пакет. Он изменяет адрес приемника на тот, что был сохранен ранее в таблице трансляции и посылает пакет нужному компьютеру. Если роутер не находит соответствие в таблице, он уничтожает пакет.
\item Компьютер получает пакет от маршрутизатора и весь процесс повторяется, пока компьютер общается с внешней системой. 
\end{itemize}
\textbf{здесь будет рисунок динамического ната}
   Перегрузка форма динамического NAT, который отображает несколько незарегистрированных адресов в единственный зарегистрированный IP адрес, используя различные порты. Известен также как PAT (Port Address Translation)
   При перегрузке, каждый компьютер в частной сети транслируется в тот же самый адрес (213.18.123.100), но с различным номером порта.
  Пример работы перегрузки:
\begin{itemize}
\item Внутренняя сеть была установлена с немаршрутизируемыми IP адресами, которые не были специально отведены для компании.
\item Компания устанавливает маршрутизатор с NAT. Маршрутизатор имеет уникальный IP адрес, который выдала IANA.
\item Компьютер в домене пытается соединиться с компьютером вне сети.
\item Маршрутизатор получает пакет от компьютера в домене.
\item После маршрутизации и проверки пакета для выполнения трансляции, маршрутизатор сохраняет немаршрутизируемый IP адрес компьютера и номер порта в таблице трансляции. Маршрутизатор заменяет немаршрутизируемый IP адрес компьютера отправителя IP адресом маршрутизатора. Маршрутизатор заменяет исходный порт компьютера отправителя неким случайным номером порта и сохраняет его в таблице трансляции адресов для этого отправителя. Таблица трансляций имеет отображение немаршрутизируемого IP адреса компьютера и номера порта на ряду с IP адресом маршрутизатора. 
\item Когда пакет возвращается от адресата, маршрутизатор проверяет порт применика в пакете. Он затем смотрит в таблицу трансляций, чтобы найти, какому компьютеру в домене принадлежит пакет. Далее роутер изменяет адрес приемника и порт приемника в те значения, которые были ранее сохранены в таблице трансляций и посылает пакет конечному узлу. 
\item Компьютер получает пакет от маршрутизатора и процесс повторяется 
\item Так как NAT маршрутизатор теперь имеет исходный адрес компьютера и исходный порт, сохраненный к таблице трансляций, он продолжит использовать тот же самый номер порта для последующих подключений. Каждый раз, когда маршрутизатор обращается к записи в таблице трансляций сбрасывается таймер жизни этой записи. Если к записи не обращаются прежде, чем таймер истекает, она удаляется из таблицы.
\end{itemize}
\textbf{здесь будет рисунок перегрузки}
   Перекрытие возникает, когда IP адреса, используемые в вашей внутренней сети, также используются в другой сети, маршрутизатор должен держать таблицу поиска этих адресов так, чтобы он мог перехватить и заменить их зарегистрированными уникальными IP адресами. Важно отметить, что NAT маршрутизатор должен транслировать ”внутренние” адреса в зарегистрированные уникальные адреса, а также должен транслировать ”внешние” зарегистрированные адреса в адреса, которые являются уникальными для частной сети. Это может быть сделано либо через статический NAT, либо вы можете использовать DNS и реализовать динамический NAT. 
\textbf{здесь будет рисунок перекрытия}
\textbf{Безопасность и Администрирование}
   Реализация динамического NAT автоматически создает межсетевую защиту между вашей внутренней сетью и внешними сетями или Интернет. Динамический NAT позволяет только подключения, которые порождаются в локальной сети. По существу, это означает, что компьютер на внешней сети не может соединиться с вашим компьютером, если ваш компьютер не начал соединение. Таким образом, вы можете работать в Интернете и соединиться с сайтом, и даже выгрузить файл. Но больше никто не может просто покуситься на ваш IP адрес и использовать его, чтобы соединиться с портом на вашем компьютере.
   Статический NAT, также называемый входным маппингом (inbound mapping), позволяет подключения, инициированные внешними устройствами к компьютерам в LAN при определенных обстоятельствах.
Например, вы можете отобразить внутренний глобальный адрес на определенный внутренний локальный адрес, который назначен на ваш Web-сервер.


\section{Типы маршрутизаторов NAT}
\label{chap1:sec3}
~~~~
\textbf{Cone NAT}
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Любой пакет с внешнего хоста, посланный на адрес 1.1.1.2:8801 будет отправлен на 192.168.0.2:2210
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{ConeNATrouter}}
 \caption{Cone NAT}
\label{fig1}
\end{figure}

\textbf{Address--Restricted cone NAT}, также называемый просто \textbf{Restricted cone NAT}.
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Пакет с любого порта внешнего хоста, посланный на адрес 1.1.1.2:8801 будет отправлен на 192.168.0.2:2210 только в случае, если 192.168.0.2:2210 предварительно посылал пакет на этот внешний хост.
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{RestrictedConeNATRouter}}
 \caption{Address--Restricted cone NAT}
\label{fig2}
\end{figure}

\textbf{Port--Restricted cone NAT}
Внутренний адрес (192.168.0.2:2210) проецируются на внешний адрес (1.1.1.2:8801). Любой пакет посланный с 192.168.0.2:2210 будет послан через 1.1.1.2:8801. Внешний хост (1.1.1.30:1234) модет послать пакет на 192.168.0.2:2210 через 1.1.1.2:8801 только в случае если ранее 192.168.0.2:2210 слал пакет на 1.1.1.30:1234 (совпадение порта имеет значение)
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{Restricted}}
 \caption{Port--Restricted cone NAT}
\label{fig3}
\end{figure}

\textbf{Symmetric NAT}
Каждый пакет с определенного внутреннего адреса:порта на определенный внешний адрес:порт будет иметь после трансляции уникальный внешний адрес:порт. Соответственно, пакет с одного и того же внутреннего адреса:порта, но посланный на другой внешний хост или порт после трансляции будет иметь другой внешний адрес:порт. Внешние хосты могут послать обратный пакет только на те хосты:порты, откуда они получили пакеты.
\begin{figure}[!h!]
 \centerline{\includegraphics[width=0.7\textwidth]{xdffdf}}
 \caption{Symmetric NAT}
\label{fig4}
\end{figure}
\cite{lit4}






%%% Local Variables:
%%% mode: latex
%%% coding: utf-8-unix
%%% TeX-master: "../default"
%%% End:
